tipos = """
voidType
stringType
untypedType
IDType
NCNameType
NameType
ENTITYType
IDREFType
languageType
NMTOKENType
QNameType
tokenType
normalizedStringType
CDATAType
booleanType
decimalType
floatType
doubleType
durationType
timeDurationType
dateTimeType
recurringInstantType
timeInstantType
timePeriodType
timeType
dateType
gYearMonthType
gYearType
centuryType
yearType
gMonthDayType
recurringDateType
gMonthType
monthType
gDayType
recurringDayType
hexBinaryType
base64BinaryType
base64Type
binaryType
anyURIType
uriType
uriReferenceType
NOTATIONType
ENTITIESType
IDREFSType
NMTOKENSType
integerType
nonPositiveIntegerType
non_Positive_IntegerType
negativeIntegerType
negative_IntegerType
longType
intType
shortType
byteType
nonNegativeIntegerType
non_Negative_IntegerType
unsignedLongType
unsignedIntType
unsignedShortType
unsignedByteType
positiveIntegerType
positive_IntegerType
compoundType
structType
headerType
bodyType
arrayType
typedArrayType
"""

tipos = [t.strip() for t in tipos.split('\n') if t.strip()]

from AccessControl import ModuleSecurityInfo
from AccessControl import allow_class
from Products.SIGFS.config import product_globals

for t in tipos:
  dotted_name = 'SOAPpy.Types.' + t
  parts = dotted_name.split('.')
  m_name = '.'.join(parts[:-1])
  k_name = parts[-1]
  ModuleSecurityInfo(m_name).declarePublic(t)
  module = __import__(m_name, product_globals, locals(), [k_name])
  klass = getattr(module, k_name)
  allow_class(klass)
